﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Entidades.Sistema.Distribucion.CoR
{
    //-----------------------------------------------------------
    /// <summary> Define la interfaz de los objetos de la cadena. </summary>
    //'-----------------------------------------------------------
    public abstract class ManejadorDespacho
    {
        // Referencia al objeto sucesor.
        ManejadorDespacho _sucesor;

        // Constructor protegido.
        protected ManejadorDespacho(ManejadorDespacho sucesor)
        {
            _sucesor = sucesor;
        }

        // Método que recibe la solicitud. Esta implementación simplemente
        // envía la solicitud al próximo objeto de la cadena. Los manejadores
        // concretos sobreescriben este método para manejar la solicitud, o 
        // invocan a esta implementación base cuando no pueden manejarla.
        public virtual TipoDeServicio Enviar(decimal totalPesoCarga, decimal distancia)
        {
            if (_sucesor == null)
            {
                TipoDeServicio t = new TipoDeServicio();
                t.retorno = false;
                return t;
            }
            else
                return _sucesor.Enviar(totalPesoCarga, distancia);
        }        
    }
    public enum EnumTipoServicioDespacho
    {
        Express = 0,
        CargaLiviana = 1,
        CargaPesada = 2
    }
}
